package vista.objetos;

import vista.ventanas.VentanaAtributo;
import logica.Atributo;
import logica.AtributoRepetidoException;
import logica.AtributoSimpleException;
import logica.ConstantesTipo;
import logica.SinNombreException;

public class FabricaAtributoGraficableCompuesto implements FabricaAtributoGraficable {

	@Override
	public AtributoGraficable crearAtributoGraficable(VentanaAtributo ventana) throws SinNombreException, NumberFormatException, AtributoRepetidoException, AtributoCompuestoException
	{
		try {
			return new AtributoGraficableCompuesto(this.crearAtributo(ventana));
		}//se supone q la ventana no va a permitir q llegue otra cosa que no sea un atributo compuesto
		catch (AtributoTipoNoSoportadoException e) { 
			e.printStackTrace();
		} catch (AtributoSimpleException e) {
			e.printStackTrace();
		}
		
		return null;
	}

	@Override
	public Atributo crearAtributo(VentanaAtributo ventana) throws SinNombreException, NumberFormatException, AtributoRepetidoException, AtributoCompuestoException 
	{
		FabricaAtributoCompuesto fabrica = new FabricaAtributoCompuesto();
		
		return fabrica.crearAtributo(ventana);
	}
	
	@Override
	public boolean necesitaExpresion() 
	{
		return false;
	}
	
	public String toString()
	{
		return ConstantesTipo.ATRIBUTO_TIPO_COMPUESTO;
	}

	@Override
	public AtributoGraficable crearAtributoGraficable(Atributo atributo) throws AtributoSimpleException
	{
		try {
			return new AtributoGraficableCompuesto(atributo);
		}
		// se supone q con esta interfaz no debería pasar
		catch (AtributoTipoNoSoportadoException e) {
			e.printStackTrace();
		} 
		
		return null;
	}

}
